package homework.day03;

import java.io.*;

/**
 * 将当前目录下的所有文件都复制一份，复制的文件命名为:原件名_cp.后缀名
 * 比如原文件为:test.dat
 * 复制后的文件为:test_cp.dat
 * @author XingHaiYang
 * @date 2022/9/7 17:56
 */
public class Test03 {
	public static void main(String[] args) throws IOException {
		/**
		 * 思路:
		 * 分为几部分考虑.
		 * 第一个是要获取到当前目录中的所有文件(思考哪个API可以解决)
		 * 第二个是获取到的每一个文件都要复制(复制用什么API)
		 * 第三个是复制的文件名，如何重新组建xxx_cp.xxx的名字?
		 *      这里要将原文件名拆开后想办法拼接_cp.
		 */
		//定位当前目录
		File dir = new File(".");
		//判断是否为目录
		if(dir.isDirectory()) {
			//获取该目录下所有子项
			File files[] = dir.listFiles();
			BufferedInputStream bis = null;
			BufferedOutputStream bos = null;
			for(int i=0;i<=files.length-1;i++) {//遍历所有子项
				String oldFileName = files[i].getName();//获取所有子项的名字
				String[] oldFileNameArray = oldFileName.split("\\.");//将子项名字进行拆分
				String newFileName = oldFileNameArray[0]+"_cp";//将拆分的第一部分拼接_cp，得到新名字
				FileInputStream fis = new FileInputStream(oldFileName);//创建文件输入流
				bis = new BufferedInputStream(fis,1024*10);//创建缓冲输入流
				FileOutputStream fos = new FileOutputStream(newFileName);//创建文件输出流
				bos = new BufferedOutputStream(fos,1024*10);//创建缓冲输出流
				// 将旧文件的内容写出到新文件
				int d;
				while( (d = bis.read()) != -1 ) {
					bos.write(d);
				}
			}
			//关闭输入输出流
			bis.close();
			bos.close();
		}
	}
}






